package pe.gob.foncodes.spp.web.controladores.configuraciones;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;

import org.primefaces.event.RowEditEvent;

import pe.gob.foncodes.spp.bs.domain.Entidad;
import pe.gob.foncodes.spp.bs.domain.Indicador;
import pe.gob.foncodes.spp.bs.services.SppServices;

@ManagedBean
@ApplicationScoped
public class ControladorIndicador implements Serializable{

	
	private static final long serialVersionUID = 1L;
	private List<Indicador> indicadores;
	private Indicador indicador;
	private Indicador indicadorNew;
	private List<Entidad> flags;
	private List<Entidad> periodos;

	@ManagedProperty(value = "#{sppServices}")
	private SppServices sppServices;
	public ControladorIndicador(){
		indicadores= new ArrayList<Indicador>();
		indicador= new Indicador();
		indicadorNew= new Indicador();
		flags= new ArrayList<Entidad>();
		periodos= new ArrayList<Entidad>();
		
		Entidad entidad1 = new Entidad(1L, "Activo");
		Entidad entidad2 = new Entidad(0L, "Inactivo");

		flags.add(entidad1);
		flags.add(entidad2);
		
		Entidad entidad = new Entidad(1L, "Mensual");
		periodos.add(entidad);
		entidad = new Entidad(2L, "Trimestral");
		periodos.add(entidad);
		entidad  = new Entidad(3L, "Anual");
		periodos.add(entidad);
	}
	
	public void listarIndicadores() {
		try {
		System.out.println(" Buscando Indicadores ");
		System.out.println(" Buscando Indicadores  parametros = " + indicador.getNidIndicador());
		
		indicadores = this.sppServices.buscarIndicadores();
		setIndicadores(indicadores);
		System.out.println(" Buscando Indicadores ");
		} catch (Exception e){
			e.printStackTrace();
		}
	}
	
	public void onEdit(RowEditEvent event) {
		Indicador indicadorEdit = null;
		try {
			indicadorEdit = (Indicador) event.getObject();
			this.sppServices.actualizarIndicador(indicador);
			
			listarIndicadores();
			
		} catch (Exception e ) {
			//facesMessage = new FacesMessage("Editar Objetivo", e.getMessage());
			e.printStackTrace();			
			//facesContext.addMessage(null, facesMessage);
	        
		}
	}
	
	public void guardarIndicador() {
		System.out.println("guardarIndicador");

		try {

			this.sppServices.guardarIndicador(indicadorNew);
			listarIndicadores();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public void onCancel(RowEditEvent event) {
		System.out.println("Cancelando edicion ");
	}
	
	public void nuevoIndicador() {
		indicadorNew = new Indicador();
	}
	
	public SppServices getSppServices() {
		return sppServices;
	}

	public void setSppServices(SppServices sppServices) {
		this.sppServices = sppServices;
	}

	public List<Indicador> getIndicadores() {
		return indicadores;
	}
	
	public void setIndicadores(List<Indicador> indicadores) {
		this.indicadores = indicadores;
	}
	
	public Indicador getIndicador() {
		return indicador;
	}
	
	public void setIndicador(Indicador indicador) {
		this.indicador = indicador;
	}
	
	public Indicador getIndicadorNew() {
		return indicadorNew;
	}
	
	public void setIndicadorNew(Indicador indicadorNew) {
		this.indicadorNew = indicadorNew;
	}
	
	public List<Entidad> getFlags() {
		return flags;
	}
	
	public void setFlags(List<Entidad> flags) {
		this.flags = flags;
	}

	public List<Entidad> getPeriodos() {
		return periodos;
	}

	public void setPeriodos(List<Entidad> periodos) {
		this.periodos = periodos;
	}
	
	
	
}
